// pages/date-time/date-time.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        endTime: "", // 倒计时
        endTime2: "", // 倒计时方式二
        serverEndTime: "2019-12-19 20:00:00", // 倒计时
        serverTime: "2019-12-18 20:00:00",
        gapTime: "", // 时差
        setIntervalId: "" //定时器id
    },

    sovleTime() {
        var self = this;
        //当前的手机系统时间和服务器的时间有偏差
        var currentTime = new Date().getTime();
        //获取时间戳IOS兼容,统一使用== 2019/12/18 19:00:00
        var serverTime = self.data.serverTime.replace(/-/g, "/");
        console.warn(serverTime);
        serverTime = new Date(serverTime).getTime();
        //时间间隔差 =当前系统时间-服务器传递的时间
        var gapTime = currentTime - serverTime;
        console.warn(gapTime);
        self.setData({
            gapTime: gapTime
        });

        //开启倒计时
        self.data.setIntervalId = setInterval(() => {
            self.countDownTime();
        }, 1000);
    },

    countDownTime() {
        var self = this;
        // 获取当前时间 gapTime: 本地时间与服务器时间差
        // console.warn("gapTime=" + gapTime);

        //时间间隔差 =当前系统时间-服务器传递的时间
        // -2=0-2 ==》当前时间慢了2s
        //服务器传递的时间=当前时间-时间间隔差
        //1.第一次同步下服务器时间
        //2.第二次开始，利用系统时间更新进行倒计时操作
        let serverStartTime = new Date().getTime() - self.data.gapTime;

        // 对服务器结束时间进行处理
        let serverEndTime = new Date(self.data.serverEndTime.replace(/-/g, "/")).getTime();

        var obj = self.countDown(serverEndTime, serverStartTime);
        if (obj.day == '00') {
            self.data.endTime = obj.hou + ':' + obj.min + ':' + obj.sec
        } else {
            self.data.endTime = obj.day + '天' + obj.hou + ':' + obj.min + ':' + obj.sec
        }

        self.setData({
            endTime: self.data.endTime
        })
    },

    // 倒计时
    countDown(endTime, startTime) {
        let obj = null;
        // 如果活动未结束，对时间进行处理
        if (endTime - startTime > 0) {
            let time = (endTime - startTime) / 1000;
            console.warn(time);
            // 获取天、时、分、秒
            let day = parseInt(time / (60 * 60 * 24));
            let hou = parseInt(time % (60 * 60 * 24) / 3600);
            let min = parseInt(time % (60 * 60 * 24) % 3600 / 60);
            let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60);

            obj = {
                day: day,
                hou: hou,
                min: min,
                sec: sec
            }
        } else { //活动已结束，全部设置为'00'
            obj = {
                day: '00',
                hou: '00',
                min: '00',
                sec: '00'
            }
        }

        return obj;
    },


    //============方式二=================
    sovleTimeDirect() {
        var self = this;
        //兼容iso系统时间格式
        var serverStartTime = new Date(self.data.serverTime.replace(/-/g, "/")).getTime();
        var serverEndTime = new Date(self.data.serverEndTime.replace(/-/g, "/")).getTime();
        //开启倒计时
        self.data.setIntervalId = setInterval(() => {
            //每次减去一秒
            serverEndTime = serverEndTime - 1000;
            var obj = self.countDown(serverEndTime, serverStartTime);
            console.warn(obj);
            if (obj.day == '00') {
                self.data.endTime2 = obj.hou + ':' + obj.min + ':' + obj.sec
            } else {
                self.data.endTime2 = obj.day + '天' + obj.hou + ':' + obj.min + ':' + obj.sec
            }
            self.setData({
                endTime2: self.data.endTime2
            })
        }, 1000);
    },
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        var self = this;
        self.sovleTime();

        // 方式二:直接使用服务器的时间
        self.sovleTimeDirect();

    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {
        var self = this;
        // self.sovleTime();
        // console.warn(self.data.getTime);    
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})